// `interface`(接口) 是 TS 设计出来用于定义对象类型的，可以对对象的形状进行描述。
// let obj = { name: "zhans" };

//定义了一个接口 表示了 对象的形状
// ---有name属性 值为字符串
// ---有age属性 值为数字
interface IPerson {
  name: string;
  readonly age: number;
  a?: number; //可选属性
}

// obj的类型 就是 IPerson
// obj实现了 IPerson接口
let obj: IPerson = { name: "zhansan", age: 18 };
// let obj: IPerson = { name: "zhansan" };
// let obj: IPerson = { name: "zhansan", age: 19, aa: 1 };

// obj.name
// obj.age

// 只读属性
// obj.age = "1";
// obj.name = "aaa";

// 使用接口定义函数的类型
interface ISum {
  (x: number, y: number): number;
}

let sum: ISum = function (a: number, b: number): number {
  return a + b;
};

interface Iobj {
  [propName: number]: string;
}

// argument[0]

let obj2: Iobj = { 0: "1", 1: "2" };
export {};
